package demo03;

import java.util.function.Consumer;

/*
 *  java.util.function.Consumer<T>：消费型接口
 *  default Consumer<T> andThen(Consumer<? super T> after)：Consumer接口的默认方法，用于将两个Consumer对象进行组合
 *  使用andThen()方法后，调用者最后还需要调用accept()方法，确立需要消费的数据对象
 *  执行顺序为：调用andThen()的Consumer对象先执行消费操作，andThen()参数内的Consumer对象后执行消费操作
 */
public class Demo04ConsumerAndThen {
    public static void main(String[] args) {
        // 调用方法时参数需要填写两个Consumer对象，可以填写两个Lambda表达式，确立消费的不同操作方式
        printString("Hello", string -> System.out.println(string.toLowerCase()),
                string -> System.out.println(string.toUpperCase())); // hello HELLO
    }

    // 执行组合操作，就需要填入两个Consumer对象参数
    public static void printString(String string, Consumer<String> consumer1, Consumer<String> consumer2) {
        consumer1.andThen(consumer2).accept(string); // consumer1连接consumer2，先执行consumer1消费数据，再执行consumer2消费数据
    }
}
